/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package projeto.classes;

import br.com.fatecpg.mdi.Conexão;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;


public class MotoristaAcessaDados {
    
    private Conexão conexao = new Conexão();
    private Connection conn;
    private PreparedStatement pstmt;
    
    public boolean incluir(ModeloMotorista m) throws SQLException {
        String insertSql = "INSERT INTO motorista(nm_motorista, tp_categoria_cnh, cd_cnh, ic_ativo_sim_nao, ds_endereco_motorista, cd_telefone, ic_terceirizado_sim_nao) " +
                "VALUES(?, ?, ?, ?, ?, ?, ?)";
        try {
            conn = conexao.getConexao();
            //conn = conexao.getConectar;
            pstmt = conn.prepareStatement(insertSql);
            pstmt.setString(1, m.getNome());
            pstmt.setInt(2, m.getCategoriaCnh());
            pstmt.setString(3, m.getCnh());
            pstmt.setInt(4, m.getAtivo());
            pstmt.setString(5, m.getEndereco());
            pstmt.setInt(6, m.getTelefone());
            pstmt.setInt(7, m.getTercerizado());
            
            return pstmt.execute();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            conexao.fecharConexao();
        }
    }
    
    public int alterar(ModeloMotorista m) throws SQLException {
        String updateSql = "UPDATE motorista SET nm_motorista = ?, tp_categoria_cnh = ?, cd_cnh = ?, ic_ativo_sim_nao = ?, ds_endereco_motorista = ?, cd_telefone = ?, ic_terceirizado_sim_nao = ? " +
               "WHERE id_motorista = ?";
        try {
            conn = conexao.getConexao();
            pstmt = conn.prepareStatement(updateSql);
            pstmt.setString(1, m.getNome());
            pstmt.setInt(2, m.getCategoriaCnh());
            pstmt.setString(3, m.getCnh());
            pstmt.setInt(4, m.getAtivo());
            pstmt.setString(5, m.getEndereco());
            pstmt.setInt(6, m.getTelefone());
            pstmt.setInt(7, m.getTercerizado());
            pstmt.setInt(8, m.getId());
            
            return pstmt.executeUpdate();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            conexao.fecharConexao();
        }
    }
    
    public ArrayList<ModeloMotorista> consulta(String filtro) throws SQLException{
        ArrayList<ModeloMotorista> lista = new ArrayList<ModeloMotorista>();
        String selectSql = "SELECT * FROM motorista WHERE " + filtro;
        ResultSet retornoConsulta = null;
        
        try {
            conn = conexao.getConexao();
            pstmt = conn.prepareStatement(selectSql);
            retornoConsulta = pstmt.executeQuery();
            
            while (retornoConsulta.next()) {
                ModeloMotorista m = new ModeloMotorista();
                m.setId(retornoConsulta.getInt(1));
                m.setNome(retornoConsulta.getString(2));
                m.setCategoriaCnh(retornoConsulta.getInt(3));
                m.setCnh(retornoConsulta.getString(4));
                m.setAtivo(retornoConsulta.getInt(5));
                m.setEndereco(retornoConsulta.getString(6));
                m.setTelefone(retornoConsulta.getInt(7));
                m.setTercerizado(retornoConsulta.getInt(8));
                
                lista.add(m);
            }
            
            return lista;
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            if (retornoConsulta != null) {
                retornoConsulta.close();
            }
            conexao.fecharConexao();
           
        }
    }
    
    public ArrayList<ModeloMotorista> consultaTodos() throws SQLException{
        ArrayList<ModeloMotorista> lista = new ArrayList<ModeloMotorista>();
        String selectSql = "SELECT * FROM motorista ORDER BY nm_motorista";
        ResultSet retornoConsulta = null;
        
        try {
            conn = conexao.getConexao();
            pstmt = conn.prepareStatement(selectSql);
            retornoConsulta = pstmt.executeQuery();
            
            while (retornoConsulta.next()) {
                ModeloMotorista m = new ModeloMotorista();
                m.setId(retornoConsulta.getInt(1));
                m.setNome(retornoConsulta.getString(2));
                m.setCategoriaCnh(retornoConsulta.getInt(3));
                m.setCnh(retornoConsulta.getString(4));
                m.setAtivo(retornoConsulta.getInt(5));
                m.setEndereco(retornoConsulta.getString(6));
                m.setTelefone(retornoConsulta.getInt(7));
                m.setTercerizado(retornoConsulta.getInt(8));
                
                lista.add(m);
            }
            
            return lista;
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            if (retornoConsulta != null) {
                retornoConsulta.close();
            }
            conexao.fecharConexao();
           
        }
    }
    
    public int consultaMaxId() throws SQLException {
        String selectSql = "SELECT MAX(id_motorista) FROM motorista";
        ResultSet retornoConsulta = null;
        int maxID = 0;
        
        try {
            conn = conexao.getConexao();
            pstmt = conn.prepareStatement(selectSql);
            retornoConsulta = pstmt.executeQuery();
            
            if (retornoConsulta.next()) {
                maxID = retornoConsulta.getInt(1);
            }
            
            return maxID;
            
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            if (retornoConsulta != null) {
                retornoConsulta.close();
            }
            conexao.fecharConexao();
           
        }
    }
    
    public int deletar(int id) throws SQLException {
        String deleteSql = "DELETE FROM motorista WHERE id_motorista = ?";
        
        try {
            conn = conexao.getConexao();
            pstmt = conn.prepareStatement(deleteSql);
            pstmt.setInt(1, id);
            
            return pstmt.executeUpdate();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            conexao.fecharConexao();
           
        }
    }
    
}
